/*
 *  Openmysee
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 */
// MultiLanguageTest.cpp : Defines the entry point for the console application.
//
#include <tchar.h>
#include <iostream>
#include <windows.h>
#include <assert.h>

typedef UINT (*GETSTRBYSTR)(LPCTSTR, LPTSTR, const UINT);
typedef bool (*SWITCHLANGUAGE)(const LANGID);

int _tmain(int /*argc*/, _TCHAR* /*argv[]*/)
{
	HINSTANCE hinstMultiLanguage = NULL; 
	GETSTRBYSTR GetStrByStr = NULL;
	SWITCHLANGUAGE SwitchLanguage = NULL;

	// Get a handle to the DLL module.
	hinstMultiLanguage = LoadLibrary(TEXT("MultiLanguage.dll"));
	if (hinstMultiLanguage == NULL)
	{
		_tprintf(TEXT("Load MultiLanguage.dll Failed. error code: %d\n"), GetLastError());
		return 0;
	}

	// If the handle is valid, try to get the function address.
	GetStrByStr = (GETSTRBYSTR) GetProcAddress(hinstMultiLanguage, "GetStrByStr"); 

	// If the function address is valid, call the function.
	if (NULL == GetStrByStr)
	{
		_tprintf(TEXT("Load GetStrByStr Failed. error code: %d\n"), GetLastError());
		return 0;
	}

	// If the handle is valid, try to get the function address.
	SwitchLanguage = (SWITCHLANGUAGE) GetProcAddress(hinstMultiLanguage, "SwitchLanguage"); 

	// If the function address is valid, call the function.
	if (NULL == SwitchLanguage)
	{
		_tprintf(TEXT("Load SwitchLanguage Failed. error code: %d\n"), GetLastError());
		return 0;
	}

	bool ret = SwitchLanguage(0x804);
	assert(ret);

	TCHAR temp[1024];
	UINT len = (GetStrByStr) (TEXT("Read Disk Error"), temp, 1024);
	if(len)
		_tprintf(temp, TEXT("test string"));
	else
		_tprintf(TEXT("load READ_DISK_ERROR error.\n"));

	_tprintf(TEXT("\n"));

	len = (GetStrByStr) (TEXT("data bufferring"), temp, 1024);
	if(len)
		_tprintf(temp, TEXT("test string"));
	else
		_tprintf(TEXT("load DATA_BUFFERING error.\n"));

	_tprintf(TEXT("\n"));

	// Free the DLL module.
	FreeLibrary(hinstMultiLanguage);

	int x = getchar();
	x;
	return 0;
}

